﻿/** 
 *   Presentacion: Presentacion del juego.
 *  
 *   @see Skynet Menu
 *   @author Eduardo Masia Roman
 */

/* --------------------------------------------------         
   Parte de Damas - EMR
   Versiones hasta la fecha:
   
   Num.   Fecha       Por / Cambios
   ---------------------------------------------------
   0.01  22-May-2009  Eduardo Masia
                      Versión inicial: Estructura.
   0.03  23-May-2009  Eduardo Masia
                      Completada clase, ya hay presentacion.
 
 ---------------------------------------------------- */

using System.Collections;

namespace Damas
{
    class Presentacion
    {
        //Convendria hacerlo con Array, al ser tamaño fijo, pero al utilizar ya los arrays en otras partes,
        // esta la hago con arraylist para incluir tambien su uso en el proyecto.
        private ArrayList misFichas;
        private PresentacionLetras misLetras;

        public void Ejecutar()
        {
            bool finPresentacion = false;

            misLetras = new PresentacionLetras();

            inicializarFichas();

            float fact = 0;
            int cont = 0;

            do
            {

                Hardware.BorrarPantallaOculta(0x00, 0x00, 0x00);

                Mover();

                Dibujar();

                DibujarLetras(fact, cont);
                misLetras.IncrementarColores();

                misLetras.ImprimirNombre(fact, cont);

                Hardware.VisualizarOculta();

                Hardware.Pausa(40);

                if (cont == 15)
                {
                    finPresentacion = true;
                }

                if (fact < 1)
                {
                    fact += 0.05f;
                }
                else
                {
                    fact = 0;
                    cont++;
                }

                if (Hardware.TeclaPulsada(Hardware.TECLA_ESP))
                {
                    finPresentacion = true;
                }

            } while (!finPresentacion);
        }


        private void DibujarLetras(float fact, int cont)
        {
            switch (cont){
                case 2:
                    misLetras.DibujarD((short)200, (short)300, fact);
                    break;

                case 3:
                    misLetras.DibujarA((short)300, (short)300, fact);
                    break;

                case 4:
                    misLetras.DibujarM((short)400, (short)300, fact);
                    break;

                case 5:
                    misLetras.DibujarA((short)500, (short)300, fact);
                    break;

                case 6:
                    misLetras.DibujarS((short)600, (short)300, fact);
                    break;
            }

            if (cont > 2)
            {
                misLetras.DibujarD((short)200, (short)300, 1);
            }
            if (cont > 3)
            {
                misLetras.DibujarA((short)300, (short)300, 1);
            }
            if (cont > 4)
            {
                misLetras.DibujarM((short)400, (short)300, 1);
            }
            if (cont > 5)
            {
                misLetras.DibujarA((short)500, (short)300, 1);
            }
            if (cont > 6)
            {
                misLetras.DibujarS((short)600, (short)300, 1);
            }
        }


        private void inicializarFichas()
        {
            //Convendria hacerlo con Array, al ser tamaño fijo, pero al utilizar ya los arrays en otras partes,
            // esta la hago con arraylist para incluir tambien su uso en el proyecto.
            misFichas = new ArrayList();

            misFichas.Add(new FichaGiratoria( 900,  100, -3,  1, 20, 30,  3));
            misFichas.Add(new FichaGiratoria(   0, -200,  2,  2, 30, 45, -3));
            misFichas.Add(new FichaGiratoria( 300,  700,  0, -3, 20, 60, -2));
            misFichas.Add(new FichaGiratoria(-100,  300,  1,  2, 50, 75,  1));
            misFichas.Add(new FichaGiratoria(-100,   10,  3,  1, 50, 75,  2));
            misFichas.Add(new FichaGiratoria( 850,  700, -4, -2, 50, 75, -1));
        }


        private void Dibujar()
        {
            foreach (FichaGiratoria f in misFichas)
            {
                f.Dibujar();
            }
        }


        private void Mover()
        {
            foreach (FichaGiratoria f in misFichas)
            {
                f.Mover();
            }
        }
    }
}
